package com.taotao.manage.service;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.springframework.stereotype.Service;

import com.taotao.manage.pojo.ContentCategory;

@Service
public class ContentCategoryService extends BaseService<ContentCategory> {

	/**
	 * 根据id以及parentId删除子子孙孙节点
	 * @param id
	 * @param parentId
	 */
	public void deleteContentCategory(Long id, Long parentId) {
		
		// 搜集所有子子孙孙节点
		List<Object> ids = new ArrayList<>();
		ids.add(id);
		findSubAll(ids, id);
		// 删除所有子子孙孙节点
		super.deleteByIds(ids, "id");
		
		// 判断父节点还有没有子节点
		ContentCategory record = new ContentCategory();
		record.setParentId(parentId);
		List<ContentCategory> list = super.queryListByWhere(record);
		if(CollectionUtils.isEmpty(list)){
			// 如果没有子节点，更新父节点为叶子节点
			ContentCategory parent = new ContentCategory();
			parent.setId(parentId);
			parent.setIsParent(false);
			super.updateSelective(parent);
		}
		
		// TODO：删除这些节点下的内容
	}
	
	private void findSubAll(List<Object> ids, Long id){
		// 查询当前节点的所有子节点
		ContentCategory record = new ContentCategory();
		record.setParentId(id);
		List<ContentCategory> list = super.queryListByWhere(record);
		// 如果子节点为空
		if(CollectionUtils.isEmpty(list)){
			return;
		}
		// 如果有子节点
		for (ContentCategory contentCategory : list) {
			// 把子节点id添加到集合中
			ids.add(contentCategory.getId());
			// 查询孙子节点
			findSubAll(ids, contentCategory.getId());
		}
	}

}
